From 3ef9a82056e892b3e2bf49f34a15816cef079d5c Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Mon, 14 Aug 2006 15:24:59 +0100 Subject: [PATCH] [LINUX][ Fix x86/64 entry.S to use paravirtualized sti/cli properly. This fixes - one instance of using XEN_BLOCK_EVENTS where XEN_UNBLOCK_EVENTS was meant - four instances of left-over cli-s that should have been replaced with XEN_BLOCK_EVENTS - one instance of slightly wrong placement (without resulting in ill behavior, but needlessly making the diff to native more complex) Signed-off-by: Jan Beulich --- linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S index 05e7ce0b7e..7edd8d5cb6 100644 --- a/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S @@ -271,7 +271,7 @@ sysret_careful: CFI_RESTORE_STATE bt $TIF_NEED_RESCHED,%edx jnc sysret_signal - XEN_BLOCK_EVENTS(%rsi) + XEN_UNBLOCK_EVENTS(%rsi) pushq %rdi CFI_ADJUST_CFA_OFFSET 8 call schedule @@ -295,7 +295,7 @@ sysret_signal: 1: movl $_TIF_NEED_RESCHED,%edi /* Use IRET because user could have changed frame. This works because ptregscall_common has called FIXUP_TOP_OF_STACK. */ - cli + XEN_BLOCK_EVENTS(%rsi) jmp int_with_check badsys: @@ -377,7 +377,7 @@ int_careful: call schedule popq %rdi CFI_ADJUST_CFA_OFFSET -8 - cli + XEN_BLOCK_EVENTS(%rsi) jmp int_with_check /* handle signals and tracing -- both require a full stack frame */ @@ -395,7 +395,7 @@ int_very_careful: popq %rdi CFI_ADJUST_CFA_OFFSET -8 andl $~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP),%edi - cli + XEN_BLOCK_EVENTS(%rsi) jmp int_restore_rest int_signal: @@ -407,7 +407,7 @@ int_signal: 1: movl $_TIF_NEED_RESCHED,%edi int_restore_rest: RESTORE_REST - cli + XEN_BLOCK_EVENTS(%rsi) jmp int_with_check CFI_ENDPROC @@ -535,8 +535,8 @@ retint_careful: call schedule popq %rdi CFI_ADJUST_CFA_OFFSET -8 - XEN_BLOCK_EVENTS(%rsi) GET_THREAD_INFO(%rcx) + XEN_BLOCK_EVENTS(%rsi) /* cli */ jmp retint_check -- 2.30.2